home *** CD-ROM | disk | FTP | other *** search
- package javax.swing;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Insets;
- import java.awt.LayoutManager;
- import java.awt.Rectangle;
- import java.io.Serializable;
- import javax.swing.border.Border;
-
- public class ScrollPaneLayout implements LayoutManager, ScrollPaneConstants, Serializable {
- protected JViewport viewport;
- protected JScrollBar vsb;
- protected JScrollBar hsb;
- protected JViewport rowHead;
- protected JViewport colHead;
- protected Component lowerLeft;
- protected Component lowerRight;
- protected Component upperLeft;
- protected Component upperRight;
- protected int vsbPolicy = 20;
- protected int hsbPolicy = 30;
-
- public void addLayoutComponent(String var1, Component var2) {
- if (var1.equals("VIEWPORT")) {
- this.viewport = (JViewport)this.addSingletonComponent(this.viewport, var2);
- } else if (var1.equals("VERTICAL_SCROLLBAR")) {
- this.vsb = (JScrollBar)this.addSingletonComponent(this.vsb, var2);
- } else if (var1.equals("HORIZONTAL_SCROLLBAR")) {
- this.hsb = (JScrollBar)this.addSingletonComponent(this.hsb, var2);
- } else if (var1.equals("ROW_HEADER")) {
- this.rowHead = (JViewport)this.addSingletonComponent(this.rowHead, var2);
- } else if (var1.equals("COLUMN_HEADER")) {
- this.colHead = (JViewport)this.addSingletonComponent(this.colHead, var2);
- } else if (var1.equals("LOWER_LEFT_CORNER")) {
- this.lowerLeft = this.addSingletonComponent(this.lowerLeft, var2);
- } else if (var1.equals("LOWER_RIGHT_CORNER")) {
- this.lowerRight = this.addSingletonComponent(this.lowerRight, var2);
- } else if (var1.equals("UPPER_LEFT_CORNER")) {
- this.upperLeft = this.addSingletonComponent(this.upperLeft, var2);
- } else {
- if (!var1.equals("UPPER_RIGHT_CORNER")) {
- throw new IllegalArgumentException("invalid layout key " + var1);
- }
-
- this.upperRight = this.addSingletonComponent(this.upperRight, var2);
- }
-
- }
-
- protected Component addSingletonComponent(Component var1, Component var2) {
- if (var1 != null && var1 != var2) {
- var1.getParent().remove(var1);
- }
-
- return var2;
- }
-
- public JViewport getColumnHeader() {
- return this.colHead;
- }
-
- public Component getCorner(String var1) {
- if (var1.equals("LOWER_LEFT_CORNER")) {
- return this.lowerLeft;
- } else if (var1.equals("LOWER_RIGHT_CORNER")) {
- return this.lowerRight;
- } else if (var1.equals("UPPER_LEFT_CORNER")) {
- return this.upperLeft;
- } else {
- return var1.equals("UPPER_RIGHT_CORNER") ? this.upperRight : null;
- }
- }
-
- public JScrollBar getHorizontalScrollBar() {
- return this.hsb;
- }
-
- public int getHorizontalScrollBarPolicy() {
- return this.hsbPolicy;
- }
-
- public JViewport getRowHeader() {
- return this.rowHead;
- }
-
- public JScrollBar getVerticalScrollBar() {
- return this.vsb;
- }
-
- public int getVerticalScrollBarPolicy() {
- return this.vsbPolicy;
- }
-
- public JViewport getViewport() {
- return this.viewport;
- }
-
- /** @deprecated */
- public Rectangle getViewportBorderBounds(JScrollPane var1) {
- return var1.getViewportBorderBounds();
- }
-
- public void layoutContainer(Container var1) {
- JScrollPane var2 = (JScrollPane)var1;
- this.vsbPolicy = var2.getVerticalScrollBarPolicy();
- this.hsbPolicy = var2.getHorizontalScrollBarPolicy();
- Rectangle var3 = new Rectangle(((Component)var2).getSize());
- Insets var4 = var1.getInsets();
- var3.x = var4.left;
- var3.y = var4.top;
- var3.width -= var4.left + var4.right;
- var3.height -= var4.top + var4.bottom;
- Rectangle var5 = new Rectangle(0, var3.y, 0, 0);
- if (this.colHead != null && this.colHead.isVisible()) {
- int var6 = this.colHead.getPreferredSize().height;
- var5.height = var6;
- var3.y += var6;
- var3.height -= var6;
- }
-
- Rectangle var20 = new Rectangle(var3.x, 0, 0, 0);
- if (this.rowHead != null && this.rowHead.isVisible()) {
- int var7 = this.rowHead.getPreferredSize().width;
- var20.width = var7;
- var3.x += var7;
- var3.width -= var7;
- }
-
- Border var21 = var2.getViewportBorder();
- Insets var8;
- if (var21 != null) {
- var8 = var21.getBorderInsets(var1);
- var3.x += var8.left;
- var3.y += var8.top;
- var3.width -= var8.left + var8.right;
- var3.height -= var8.top + var8.bottom;
- } else {
- var8 = new Insets(0, 0, 0, 0);
- }
-
- var5.x = var3.x;
- var20.y = var3.y;
- Component var9 = this.viewport != null ? this.viewport.getView() : null;
- Dimension var10 = var9 != null ? var9.getPreferredSize() : new Dimension(0, 0);
- Dimension var11 = this.viewport != null ? this.viewport.toViewCoordinates(var3.getSize()) : new Dimension(0, 0);
- boolean var12 = false;
- boolean var13 = false;
- if (var9 instanceof Scrollable) {
- Scrollable var14 = (Scrollable)var9;
- var12 = var14.getScrollableTracksViewportWidth();
- var13 = var14.getScrollableTracksViewportHeight();
- }
-
- Rectangle var23 = new Rectangle(0, var3.y - var8.top, 0, 0);
- boolean var15;
- if (this.vsbPolicy == 22) {
- var15 = true;
- } else if (this.vsbPolicy == 21) {
- var15 = false;
- } else {
- var15 = !var13 && var10.height > var11.height;
- }
-
- if (this.vsb != null && var15) {
- int var16 = this.vsb.getPreferredSize().width;
- var3.width -= var16;
- var23.x = var3.x + var3.width + var8.right;
- var23.width = var16;
- }
-
- Rectangle var24 = new Rectangle(var3.x - var8.left, 0, 0, 0);
- boolean var17;
- if (this.hsbPolicy == 32) {
- var17 = true;
- } else if (this.hsbPolicy == 31) {
- var17 = false;
- } else {
- var17 = !var12 && var10.width > var11.width;
- }
-
- if (this.hsb != null && var17) {
- int var18 = this.hsb.getPreferredSize().height;
- var3.height -= var18;
- var24.y = var3.y + var3.height + var8.bottom;
- var24.height = var18;
- if (this.vsb != null && !var15 && this.vsbPolicy != 21) {
- var11 = this.viewport.toViewCoordinates(var3.getSize());
- var15 = var10.height > var11.height;
- if (var15) {
- int var19 = this.vsb.getPreferredSize().width;
- var3.width -= var19;
- var23.x = var3.x + var3.width + var8.right;
- var23.width = var19;
- }
- }
- }
-
- var23.height = var3.height + var8.top + var8.bottom;
- var24.width = var3.width + var8.left + var8.right;
- var20.height = var3.height;
- var5.width = var3.width;
- if (this.viewport != null) {
- this.viewport.setBounds(var3);
- }
-
- if (this.rowHead != null) {
- this.rowHead.setBounds(var20);
- }
-
- if (this.colHead != null) {
- this.colHead.setBounds(var5);
- }
-
- if (this.vsb != null) {
- if (var15) {
- this.vsb.setVisible(true);
- this.vsb.setBounds(var23);
- } else {
- this.vsb.setVisible(false);
- }
- }
-
- if (this.hsb != null) {
- if (var17) {
- this.hsb.setVisible(true);
- this.hsb.setBounds(var24);
- } else {
- this.hsb.setVisible(false);
- }
- }
-
- if (this.lowerLeft != null) {
- this.lowerLeft.setBounds(var20.x, var24.y, var20.width, var24.height);
- }
-
- if (this.lowerRight != null) {
- this.lowerRight.setBounds(var23.x, var24.y, var23.width, var24.height);
- }
-
- if (this.upperLeft != null) {
- this.upperLeft.setBounds(var20.x, var5.y, var20.width, var5.height);
- }
-
- if (this.upperRight != null) {
- this.upperRight.setBounds(var23.x, var5.y, var23.width, var5.height);
- }
-
- }
-
- public Dimension minimumLayoutSize(Container var1) {
- JScrollPane var2 = (JScrollPane)var1;
- this.vsbPolicy = var2.getVerticalScrollBarPolicy();
- this.hsbPolicy = var2.getHorizontalScrollBarPolicy();
- Insets var3 = var1.getInsets();
- int var4 = var3.left + var3.right;
- int var5 = var3.top + var3.bottom;
- if (this.viewport != null) {
- Dimension var6 = this.viewport.getMinimumSize();
- var4 += var6.width;
- var5 += var6.height;
- }
-
- Border var8 = var2.getViewportBorder();
- if (var8 != null) {
- Insets var7 = var8.getBorderInsets(var1);
- var4 += var7.left + var7.right;
- var5 += var7.top + var7.bottom;
- }
-
- if (this.rowHead != null && this.rowHead.isVisible()) {
- Dimension var9 = this.rowHead.getMinimumSize();
- var4 += var9.width;
- var5 = Math.max(var5, var9.height);
- }
-
- if (this.colHead != null && this.colHead.isVisible()) {
- Dimension var10 = this.colHead.getMinimumSize();
- var4 = Math.max(var4, var10.width);
- var5 += var10.height;
- }
-
- if (this.vsb != null && this.vsbPolicy != 21) {
- Dimension var11 = this.vsb.getMinimumSize();
- var4 += var11.width;
- var5 = Math.max(var5, var11.height);
- }
-
- if (this.hsb != null && this.hsbPolicy != 21) {
- Dimension var12 = this.hsb.getMinimumSize();
- var4 = Math.max(var4, var12.width);
- var5 += var12.height;
- }
-
- return new Dimension(var4, var5);
- }
-
- public Dimension preferredLayoutSize(Container var1) {
- JScrollPane var2 = (JScrollPane)var1;
- this.vsbPolicy = var2.getVerticalScrollBarPolicy();
- this.hsbPolicy = var2.getHorizontalScrollBarPolicy();
- Insets var3 = var1.getInsets();
- int var4 = var3.left + var3.right;
- int var5 = var3.top + var3.bottom;
- Dimension var6 = null;
- Dimension var7 = null;
- Component var8 = null;
- if (this.viewport != null) {
- var6 = this.viewport.getPreferredSize();
- var7 = this.viewport.getViewSize();
- var8 = this.viewport.getView();
- }
-
- if (var6 != null) {
- var4 += var6.width;
- var5 += var6.height;
- }
-
- Border var9 = var2.getViewportBorder();
- if (var9 != null) {
- Insets var10 = var9.getBorderInsets(var1);
- var4 += var10.left + var10.right;
- var5 += var10.top + var10.bottom;
- }
-
- if (this.rowHead != null && this.rowHead.isVisible()) {
- var4 += this.rowHead.getPreferredSize().width;
- }
-
- if (this.colHead != null && this.colHead.isVisible()) {
- var5 += this.colHead.getPreferredSize().height;
- }
-
- if (this.vsb != null && this.vsbPolicy != 21) {
- if (this.vsbPolicy == 22) {
- var4 += this.vsb.getPreferredSize().width;
- } else if (var7 != null && var6 != null) {
- boolean var11 = true;
- if (var8 instanceof Scrollable) {
- var11 = ((Scrollable)var8).getScrollableTracksViewportHeight() ^ true;
- }
-
- if (var11 && var7.height > var6.height) {
- var4 += this.vsb.getPreferredSize().width;
- }
- }
- }
-
- if (this.hsb != null && this.hsbPolicy != 31) {
- if (this.hsbPolicy == 32) {
- var5 += this.hsb.getPreferredSize().height;
- } else if (var7 != null && var6 != null) {
- boolean var12 = true;
- if (var8 instanceof Scrollable) {
- var12 = ((Scrollable)var8).getScrollableTracksViewportWidth() ^ true;
- }
-
- if (var12 && var7.width > var6.width) {
- var5 += this.hsb.getPreferredSize().height;
- }
- }
- }
-
- return new Dimension(var4, var5);
- }
-
- public void removeLayoutComponent(Component var1) {
- if (var1 == this.viewport) {
- this.viewport = null;
- } else if (var1 == this.vsb) {
- this.vsb = null;
- } else if (var1 == this.hsb) {
- this.hsb = null;
- } else if (var1 == this.rowHead) {
- this.rowHead = null;
- } else if (var1 == this.colHead) {
- this.colHead = null;
- } else if (var1 == this.lowerLeft) {
- this.lowerLeft = null;
- } else if (var1 == this.lowerRight) {
- this.lowerRight = null;
- } else if (var1 == this.upperLeft) {
- this.upperLeft = null;
- } else if (var1 == this.upperRight) {
- this.upperRight = null;
- }
-
- }
-
- public void setHorizontalScrollBarPolicy(int var1) {
- switch (var1) {
- case 30:
- case 31:
- case 32:
- this.hsbPolicy = var1;
- return;
- default:
- throw new IllegalArgumentException("invalid horizontalScrollBarPolicy");
- }
- }
-
- public void setVerticalScrollBarPolicy(int var1) {
- switch (var1) {
- case 20:
- case 21:
- case 22:
- this.vsbPolicy = var1;
- return;
- default:
- throw new IllegalArgumentException("invalid verticalScrollBarPolicy");
- }
- }
-
- public void syncWithScrollPane(JScrollPane var1) {
- this.viewport = var1.getViewport();
- this.vsb = var1.getVerticalScrollBar();
- this.hsb = var1.getHorizontalScrollBar();
- this.rowHead = var1.getRowHeader();
- this.colHead = var1.getColumnHeader();
- this.lowerLeft = var1.getCorner("LOWER_LEFT_CORNER");
- this.lowerRight = var1.getCorner("LOWER_RIGHT_CORNER");
- this.upperLeft = var1.getCorner("UPPER_LEFT_CORNER");
- this.upperRight = var1.getCorner("UPPER_RIGHT_CORNER");
- this.vsbPolicy = var1.getVerticalScrollBarPolicy();
- this.hsbPolicy = var1.getHorizontalScrollBarPolicy();
- }
- }
-